home *** CD-ROM | disk | FTP | other *** search
/ ftp.cs.arizona.edu / ftp.cs.arizona.edu.tar / ftp.cs.arizona.edu / icon / newsgrp / group00a.txt / 000063_icon-group-sender _Thu Apr 13 12:43:11 2000.msg < prev    next >
Internet Message Format  |  2001-01-03  |  2KB

  1. Return-Path: <icon-group-sender>
  2. Received: (from root@localhost)
  3.     by baskerville.CS.Arizona.EDU (8.9.1a/8.9.1) id MAA14559
  4.     for icon-group-addresses; Thu, 13 Apr 2000 12:41:47 -0700 (MST)
  5. Message-Id: <200004131941.MAA14559@baskerville.CS.Arizona.EDU>
  6. Date: Thu, 13 Apr 2000 09:00:07 -0700 (MST)
  7. From: Gregg Townsend <gmt@baskerville.CS.Arizona.EDU>
  8. To: eddie@holyrood.ed.ac.uk, icon-group@optima.CS.Arizona.EDU
  9. Subject: Re: changes to proc() ??
  10. Errors-To: icon-group-errors@optima.CS.Arizona.EDU
  11. Status: RO
  12.  
  13. The effect you're seeing is due to a change in the Icon linker
  14. a few years ago.  To avoid wasting space, the linker discards
  15. procedures that are never referenced in the code.  This makes a
  16. huge difference (megabytes vs. kilobytes) for some programs that
  17. reference library procedures.
  18.  
  19. Since in your example the procedure show() is never referenced,
  20. it is discarded, and so it's no longer around to be found by
  21. proc("show").  A simple solution is to just reference any such
  22. procedures once in the code -- they don't need to be called,
  23. just referenced.
  24.  
  25. For example:
  26.  
  27.     procedure main()
  28.        references()
  29.        p := proc(read())
  30.           ...
  31.     end
  32.  
  33.     procedure references()
  34.        # list otherwise unreferenced procedures here
  35.        show
  36.           ...
  37.     end
  38.  
  39. Alternatively you can use the "invocable" declaration:
  40.     invocable "show"
  41. There's also 
  42.     invocable all
  43. but that completely disables the suppression of unused code.
  44.  
  45.    ---------------------------------------------------------------------------
  46.    Gregg Townsend         Staff Scientist      The University of Arizona
  47.    gmt@cs.arizona.edu     Computer Science     Tucson, Arizona, USA
  48.